#pragma once

#include "../../../Common/HkIncludes.h"
#include "../../Collision/Agent/HkpCollidable.h"

using namespace Microsoft::Xna::Framework;

namespace Havok
{
	namespace Dynamics
	{
		namespace Phantom
		{
			enum class PhantomType
			{
				Aabb = HK_PHANTOM_AABB,
				SimpleShape = HK_PHANTOM_SIMPLE_SHAPE,
				CachingShape = HK_PHANTOM_CACHING_SHAPE,
				User0 = HK_PHANTOM_USER0,
				User1 = HK_PHANTOM_USER1,
				User2 = HK_PHANTOM_USER2,
				User3 = HK_PHANTOM_USER3,
				User4 = HK_PHANTOM_USER4,
				User5 = HK_PHANTOM_USER5,
				User6 = HK_PHANTOM_USER6,
				User7 = HK_PHANTOM_USER7,
				User8 = HK_PHANTOM_USER8,
				User9 = HK_PHANTOM_USER9,
			};

			public ref class HkpPhantom
			{
			protected:
				HkpPhantom(){};
			public:
				property PhantomType Type
				{
					virtual PhantomType get();
				}
				void CalcAabb(BoundingBox% aabb);

				// Usable only with inheritance ..
				//virtual void AddOverlappingCollidable(Collision::HkpCollidable^ collidable);
				//virtual void RemoveOverlappingCollidable(Collision::HkpCollidable^ collidable);

			internal: 
				hkpPhantom* m_phantom;
			};
		}
	}
}